package br.org.acessobrasil.processoacessibilidade.vo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Classe que representa o resumo da avalia��o de uma tag HTML.
 * @author Fabio Issamu Oshiro, Jonatas Pacheco Ribeiro
 * @version 1.1
 */
@Entity
@Table(name="erroouaviso")
public class ErroOuAvisoPro implements Serializable{
	private static final long serialVersionUID = -3880640394918991258L;

	@Id
	@GeneratedValue
	private long idErroOuAviso;
	
	public long getIdErroOuAviso() {
		return idErroOuAviso;
	}

	public void setIdErroOuAviso(long idErroOuAviso) {
		this.idErroOuAviso = idErroOuAviso;
	}

	/**
	 * Guarda a regra utilizada
	 */
	private int regraWCAGEMAG;
	
	/**
	 * Guarda o c�digo da regra
	 */
	private String codTextoRegra;
	
	/**
	 * Guarda o n�mero da linha com o erro ou aviso 
	 */
	private int linha=0;
	
	/**
	 * Guarda o n�mero da coluna com o erro ou aviso 
	 */
	private int coluna=0;
	
	/**
	 * true se estiver guardando um erro
	 */
	private boolean erro=false;
	
	/**
	 * true se estiver guardando um aviso
	 */
	private boolean aviso=false;
  
    /**
     * String que representa a tag HTML avaliada.<br>
     * len = 2000 por causa do viewstate
     */
	@Column(length=2000)
    private String tagCompleta;

    /**
     * Construtor de Validado.
     */
    public ErroOuAvisoPro() { }

    /**
     * @return Retorna o valor de tagCompleta.
     */
    public String getTagCompleta() {
        return tagCompleta;
    }

    /**
     * @param tagFull Seta o valor de tagCompleta.
     */
    public void setTagCompleta(final String tagFull) {
    	//System.out.print("setTagCompleta(final String tagFull="+tagFull+")\n");
        this.tagCompleta = tagFull;
    }
    
    /**
     * Informa que est� guardando um erro
     */
    public void setErro(){
    	erro=true;
    	aviso=false;
    }
    
    /**
     * Informa que est� guardando um aviso
     */
    public void setAviso(){
    	erro=false;
    	aviso=true;
    }
    
    /**
     * Retorna true se estiver guardando um aviso
     */
    public boolean isAviso(){
    	return aviso;
    }
    
    /**
     * Retorna true se estiver guardando um erro
     */
    public boolean isErro(){
    	return erro;
    }

	public int getLinha() {
		return linha;
	}

	public void setLinha(int linha) {
		this.linha = linha;
	}

	public int getColuna() {
		return coluna;
	}

	public void setColuna(int coluna) {
		this.coluna = coluna;
	}

	/**
	 * C�digo do identificador da regra
	 * Ex: 2.19 
	 */
	public String getCodTextoRegra() {
		return codTextoRegra;
	}
	
	
	/**
	 * Atribui o c�digo da regra
	 * Ex: 2.19 
	 * setIdTextoRegra(2,19);
	 * @param codigo
	 */
	public void setCodTextoRegra(String codigo) {
		this.codTextoRegra = codigo;
	}

	/**
	 * Retorna a regra utilizada
	 * @return InterfNucleos.EMAG ou InterfNucleos.WCAG
	 */
	public int getWCAGEMAG() {
		return regraWCAGEMAG;
	}

	/**
	 * Guarda a regra utilizada
	 * InterfNucleos.EMAG ou InterfNucleos.WCAG
	 * @param emag_wcag
	 */
	public void setWCAGEMAG(int emag_wcag) {
		this.regraWCAGEMAG = emag_wcag;
	}
    
	public ErroOuAvisoPro asNew() {
		ErroOuAvisoPro erroNovo = new ErroOuAvisoPro();
		erroNovo.setCodTextoRegra(this.getCodTextoRegra());
		erroNovo.setColuna(this.getColuna());
		if(this.erro){
			erroNovo.setErro();
		}else{
			erroNovo.setAviso();
		}
		erroNovo.setLinha(this.getLinha());
		erroNovo.setTagCompleta(this.tagCompleta);
		erroNovo.setWCAGEMAG(this.getWCAGEMAG());
		return erroNovo;
	}
}